package com.example.project.service;

import java.util.List;

import com.example.project.entity.Issue;

/**
 * 需求相似度服务接口
 */
public interface IssueSimilarityService {
    
    /**
     * 查找与指定需求相似的历史需求
     * 
     * @param issueId 需求ID
     * @param limit 返回结果数量限制
     * @return 相似需求列表，按相似度从高到低排序
     */
    List<Issue> findSimilarIssues(Long issueId, Integer limit);
    
    /**
     * 批量计算和缓存需求相似度
     * 
     * @param issueId 需求ID
     */
    void calculateAndCacheSimilarities(Long issueId);
    
    /**
     * 清除指定需求的相似度缓存
     * 
     * @param issueId 需求ID
     */
    void clearSimilarityCache(Long issueId);
    
    /**
     * 基于关键词查找相似需求
     * 
     * @param keywords 关键词
     * @param projectId 项目ID（可选）
     * @param limit 返回结果数量限制
     * @return 相似需求列表
     */
    List<Issue> findSimilarIssuesByKeywords(String keywords, Long projectId, Integer limit);
}